"""
@author: ztt
@file: 2022-12-03-作业.py
@time: 2022/12/6 19:17
"""

#定义一个节点类，用来实现链表的创建,Python中不存在指针的概念，可以通过定义类来实现类似链表的效果。
class ListNode:
    def __init__(self, x):
        self.val = x
        self.next = None    #x代表存储的内容，next用来模拟指针。

class Solution:
    #实现链表的反转
    def reverseList(self, head):
        cur = head # 代表当前节点
        pre = None # 表示反转后的链表
        # pre, cur = None, head
        while cur != None:
            tmp = cur.next # 将当前节点的后续节点传递给中间变量
            cur.next = pre # # cur 指向新的链表
            pre = cur # 更新反转后的链表，cur为当前链表的新的头节点
            cur = tmp # 原链表节点后移一位。
        return pre

#把反转以后的链表打印出来
def print_linked_list(head):
    if not head or not head.next:
        return []
    result = []
    while head != None:
        result.append(head.val)
        head = head.next
    return result

# 调用节点类，创建一个链表： a->b->c，分别对应的就是：1，2，3
a = ListNode(1)
b = ListNode(2)
c = ListNode(3)
a.next = b
b.next = c
#创建一个实例化对象
demo = Solution()
print(print_linked_list(demo.reverseList(a)))



